home *** CD-ROM | disk | FTP | other *** search
/ Adobe Graphics & Publishing SDK 1996 December / Adobe Graphics & Publishing SDK 1996 December.iso / mac / Photoshop 4.0 SDK r2 Mac / Examples / Selection / Shape / Common / ShapeScripting.c < prev   
Encoding:
C/C++ Source or Header  |  1996-07-27  |  4.3 KB  |  210 lines  |  [TEXT/CWIE]

  1. /*
  2.     File: ShapeScripting.c
  3.  
  4.     Copyright 1996 by Adobe Systems, Inc.
  5.  
  6.     C source file for scripting functions for Shape example.
  7. */
  8.  
  9. #include "Shape.h"
  10.  
  11. /*****************************************************************************/
  12.  
  13. /* Checks the parameters against scripting-returned parameters, if any, and
  14.    updates our parameters to match ones given to us by the scripting system. */
  15.  
  16. Boolean ReadScriptParams (GPtr globals)
  17. {
  18.     PIReadDescriptor            token = NULL;
  19.     DescriptorKeyID                key = NULLID;
  20.     DescriptorTypeID            type = NULLID;
  21.     OSType                        x = typeNull;
  22.     DescriptorKeyIDArray        array = { keyShape, keyCreate, NULLID };
  23.     int32                        flags = 0;
  24.     OSErr                        stickyError = noErr;
  25.     Boolean                        returnValue = true;
  26.     
  27.     if (DescriptorAvailable())
  28.     { /* playing back.  Do our thing. */
  29.         token = OpenReader(array);
  30.         if (token)
  31.         {
  32.             while (PIGetKey(token, &key, &type, &flags))
  33.             {
  34.                 switch (key)
  35.                 {
  36.                     case keyShape:
  37.                         PIGetEnum(token, &x);
  38.                         gWhatShape = KeyToEnum(x, typeShape);
  39.                         break;
  40.                     case keyCreate:
  41.                         PIGetEnum(token, &x);
  42.                         gCreate = KeyToEnum(x, typeCreate);
  43.                         break;
  44.                 }
  45.             }
  46.  
  47.             stickyError = CloseReader(&token); // closes & disposes.
  48.                 
  49.             if (stickyError)
  50.             {
  51.                 if (stickyError == errMissingParameter) // missedParamErr == -1715
  52.                     ;
  53.                     /* (descriptorKeyIDArray != NULL)
  54.                        missing parameter somewhere.  Walk IDarray to find which one. */
  55.                 else
  56.                     gResult = stickyError;
  57.             }
  58.         }
  59.         
  60.         returnValue = PlayDialog();
  61.         /* return TRUE if want to show our Dialog */        
  62.     }
  63.     
  64.     return returnValue;
  65. }
  66.         
  67. /*****************************************************************************/
  68.  
  69. /* Writes our parameters to the scripting system. */
  70.  
  71. OSErr WriteScriptParams (GPtr globals)
  72. {
  73.     PIWriteDescriptor            token = nil;
  74.     OSErr                        gotErr = noErr;
  75.             
  76.     if (DescriptorAvailable())
  77.     { /* recording.  Do our thing. */
  78.         token = OpenWriter();
  79.         if (token)
  80.         {
  81.             PIPutEnum(token,
  82.                       keyShape, 
  83.                       typeShape, 
  84.                       EnumToKey(gWhatShape, typeShape));
  85.             PIPutEnum(token,
  86.                       keyCreate,
  87.                       typeCreate, 
  88.                       EnumToKey(gCreate, typeCreate));
  89.             gotErr = CloseWriter(&token); /* closes and sets dialog optional */
  90.             /* done.  Now pass handle on to Photoshop */
  91.         }
  92.     }
  93.     return gotErr;
  94. }
  95.  
  96. /*****************************************************************************/
  97. /* Takes the property units and returns a corresponding enumerated number */
  98.  
  99. short KeyToEnum (OSType key, OSType whatType)
  100.  
  101. {
  102.     switch (whatType)
  103.     {
  104.         case typeShape:
  105.             switch (key)
  106.             {
  107.                 case shapeTriangle:
  108.                     return iShapeTriangle;
  109.                     break;
  110.                 case shapeSquare:
  111.                     return iShapeSquare;
  112.                     break;
  113.                 case shapeCircle:
  114.                     return iShapeCircle;
  115.                     break;
  116.                 case shapeStar:
  117.                     return iShapeStar;
  118.                     break;
  119.                 case shapeTreble:
  120.                     return iShapeTreble;
  121.                     break;
  122.                 case shapeRibbon:
  123.                     return iShapeRibbon;
  124.                     break;
  125.                 case shapeNote:
  126.                     return iShapeNote;
  127.                     break;
  128.             }
  129.             break;
  130.         case typeCreate:
  131.             switch (key)
  132.             {
  133.                 case createSelection:
  134.                     return iCreateSelection;
  135.                     break;
  136.                 case createMaskpath:
  137.                     return iCreateMaskpath;
  138.                     break;
  139.                 case createLayer:
  140.                     return iCreateLayer;
  141.                     break;
  142.             }
  143.             break;
  144.         case typePISel:
  145.             switch (key)
  146.             {
  147.                 case createSelection:
  148.                     return piSelMakeMask;
  149.                     break;
  150.                 case createMaskpath:
  151.                     return piSelMakeWorkPath;
  152.                     break;
  153.                 case createLayer:
  154.                     return piSelMakeLayer;
  155.                     break;
  156.             }
  157.             break;
  158.     }
  159. }
  160.  
  161. /*****************************************************************************/
  162. /* Takes the property enumeration and returns the corresponding key */
  163.  
  164. OSType EnumToKey (short keyEnum, OSType whatType)
  165.  
  166. {
  167.     switch (whatType)
  168.     {
  169.         case typeShape:
  170.             switch (keyEnum)
  171.             {
  172.                 case iShapeTriangle:
  173.                     return shapeTriangle;
  174.                     break;
  175.                 case iShapeSquare:
  176.                     return shapeSquare;
  177.                     break;
  178.                 case iShapeCircle:
  179.                     return shapeCircle;
  180.                     break;
  181.                 case iShapeStar:
  182.                     return shapeStar;
  183.                     break;
  184.                 case iShapeTreble:
  185.                     return shapeTreble;
  186.                     break;
  187.                 case iShapeRibbon:
  188.                     return shapeRibbon;
  189.                     break;
  190.                 case iShapeNote:
  191.                     return shapeNote;
  192.                     break;
  193.             }
  194.             break;
  195.         case typeCreate:
  196.             switch (keyEnum)
  197.             {
  198.                 case iCreateSelection:
  199.                     return createSelection;
  200.                     break;
  201.                 case iCreateMaskpath:
  202.                     return createMaskpath;
  203.                     break;
  204.                 case iCreateLayer:
  205.                     return createLayer;
  206.                     break;
  207.             }
  208.             break;
  209.     }
  210. }